import axios from 'axios'
import router from '@/router'
import store from '@/store'
// 给axios设置一些默认行为
switch (process.env.NODE_ENV) {
  case 'production':
    axios.defaults.baseURL = 'http://47.96.0.211:3001/admin'
    break
  case 'development':
    axios.defaults.baseURL = 'http://47.96.0.211:3001/admin'
    break
}
// 设置超时时间
axios.defaults.timeout = 5000
// 设置跨域是否需要携带凭证
axios.defaults.withCredentials = false
// 设置请求拦截器，
axios.interceptors.request.use(
  (config) => {
    // 进行token校验（JWT）：接收服务器返回的token，存储到本地，每次发送请求，都需要带上token
    const token = localStorage.getItem('token')
    token && (config.headers.token = token)
    // config需要返回
    return config
  },
  (error) => {
    // 请求错误的操作，返回报错信息
    return Promise.reject(error)
  }
)

// 响应之后的拦截器
axios.interceptors.response.use((response) => {
  if (response.data?.data?.token) {
    localStorage.setItem('token', response.data.data.token)
  }
  // 如果token过期了，后端返回状态码匹配到了，直接进行编程式导航跳登录界面
  if (response.data?.code === '10119') {
    localStorage.removeItem('token')
    store.commit('updateUserInfo', {})
    router.push('/login')
  }
  ElMessage({
    // 不需要引入，自动就可以使用了
    message: response?.data?.message,
    type: response.data.code === '200' ? 'success' : 'error'
  })
  return response.data
})
export default axios
